module;
#include <QObject>
#include <QMap>
#include <QString>
#include <QMutex>
#include <QtCore>
#include <QtCore/qtmochelpers.h>
#include <QtCore/QPair>
module GlobalData;

    GlobalData& GlobalData::instance() {
        static GlobalData instance; // 确保只会创建一次
        return instance;            // 在第一次使用时实例化
    }

    // 设置第一个 QMap 的值
     void GlobalData::setMap1Value(const QString &key, const QVariant &value) {
        QMutexLocker locker(&mutex1);
         if (map1[key] != value){
        map1[key] = value;
        QMap<QString, QVariant> wDataMap;
        wDataMap[key] = value;
        emit map1Changed(wDataMap);
         }
    }

    // 获取第一个 QMap 的值
    QVariant GlobalData::getMap1Value(const QString &key) {
        QMutexLocker locker(&mutex1);
        return map1.value(key);
    }

    // 遍历 map1 的值
    QList<QPair<QString, QVariant>> GlobalData::getAllMap1Values() const {
        QMutexLocker locker(&mutex1);
        QList<QPair<QString, QVariant>> result;

        for (auto it = map1.constBegin(); it != map1.constEnd(); ++it) {
            result.append(qMakePair(it.key(), it.value()));
        }

        return result;
    }

    // 设置第二个 QMap 的值
    void GlobalData::setMap2Value(const QString &key, const QVariant &value) {
        QMutexLocker locker(&mutex2);
        map2[key] = value;
    }

    // 获取第二个 QMap 的值
    QVariant GlobalData::getMap2Value(const QString &key) {
        QMutexLocker locker(&mutex2);
        return map2.value(key);
    }

    // 遍历 map2 的值
    QList<QPair<QString, QVariant>> GlobalData::getAllMap2Values() const {
        QMutexLocker locker(&mutex2);
        QList<QPair<QString, QVariant>> result;

        for (auto it = map2.constBegin(); it != map2.constEnd(); ++it) {
            result.append(qMakePair(it.key(), it.value()));
        }

        return result;
    }

    // 设置第三个 QMap 的值
    void GlobalData::setMap3Value(const QString &key, const QVariant &value) {
        QMutexLocker locker(&mutex3);
        map3[key] = value;
    }

    // 获取第三个 QMap 的值
    QVariant GlobalData::getMap3Value(const QString &key) {
        QMutexLocker locker(&mutex3);
        return map3.value(key);
    }

    // 遍历 map3 的值
    QList<QPair<QString, QVariant>> GlobalData::getAllMap3Values() const {
        QMutexLocker locker(&mutex3);
        QList<QPair<QString, QVariant>> result;

        for (auto it = map3.constBegin(); it != map3.constEnd(); ++it) {
            result.append(qMakePair(it.key(), it.value()));
        }

        return result;
    }



    void GlobalData::setMap1ValueSlot(const QString &key, const QVariant &value){
        setMap1Value(key, value);
    };



//放在文件最后，文件需要手动生成
#include "globaldata.moc"
